home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 10 / AACD 10.iso / AACD / Games / MAME / src / machine / geebee.c < prev    next >
C/C++ Source or Header  |  2000-04-23  |  3KB  |  147 lines

  1. /****************************************************************************
  2.  *
  3.  * geebee.c
  4.  *
  5.  * machine driver
  6.  * juergen buchmueller <pullmoll@t-online.de>, jan 2000
  7.  *
  8.  * TODO:
  9.  * backdrop support for lamps? (player1, player2 and serve)
  10.  *
  11.  ****************************************************************************/
  12.  
  13. #include "driver.h"
  14. #include "vidhrdw/generic.h"
  15.  
  16. /* from sndhrdw/geebee.c */
  17. WRITE_HANDLER( geebee_sound_w );
  18.  
  19. /* globals */
  20. int geebee_ball_h;
  21. int geebee_ball_v;
  22. int geebee_lamp1;
  23. int geebee_lamp2;
  24. int geebee_lamp3;
  25. int geebee_counter;
  26. int geebee_lock_out_coil;
  27. int geebee_bgw;
  28. int geebee_ball_on;
  29. int geebee_inv;
  30.  
  31. #ifdef MAME_DEBUG
  32. extern char geebee_msg[32+1];
  33. extern int geebee_cnt;
  34. #endif
  35.  
  36. int geebee_interrupt(void)
  37. {
  38.     cpu_set_irq_line(0, 0, PULSE_LINE);
  39.     return ignore_interrupt();
  40. }
  41.  
  42. int kaitei_interrupt(void)
  43. {
  44.     cpu_set_irq_line(0, 0, HOLD_LINE);
  45.     return ignore_interrupt();
  46. }
  47.  
  48. READ_HANDLER( geebee_in_r )
  49. {
  50.     int data = readinputport(offset & 3);
  51.     if ((offset & 3) == 2)    /* combine with Bonus Life settings ? */
  52.     {
  53.         if (data & 0x02)    /* 5 lives? */
  54.             data |= readinputport(5);
  55.         else                /* 3 lives */
  56.             data |= readinputport(4);
  57.     }
  58.     logerror("in_r %d $%02X\n", offset & 3, data);
  59.     return data;
  60. }
  61.  
  62. READ_HANDLER( navalone_in_r )
  63. {
  64.     int data = readinputport(offset & 3);
  65.     if ((offset & 3) == 3)
  66.     {
  67.         int joy = readinputport(4);
  68.         /* map digital two-way joystick to two fixed VOLIN values */
  69.         if( joy & 1 ) data = 0xa0;
  70.         if( joy & 2 ) data = 0x10;
  71.     }
  72.     logerror("in_r %d $%02X\n", offset & 3, data);
  73.     return data;
  74. }
  75.  
  76. WRITE_HANDLER( geebee_out6_w )
  77. {
  78.     switch (offset & 3)
  79.     {
  80.     case 0:
  81.         logerror("out6_w:0 ball_h   $%02X\n", data);
  82.         geebee_ball_h = data ^ 0xff;
  83.         break;
  84.     case 1:
  85.         logerror("out6_w:1 ball_v   $%02X\n", data);
  86.         geebee_ball_v = data ^ 0xff;
  87.         break;
  88.     case 2:
  89.         logerror("out6_w:2 n/c      $%02X\n", data);
  90. #ifdef MAME_DEBUG
  91.         sprintf(geebee_msg, "out6_w:2 n/c $%02X", data);
  92.         geebee_cnt = 30;
  93. #endif
  94.         break;
  95.     default:
  96.         logerror("out6_w:3 sound    $%02X\n", data);
  97.         geebee_sound_w(offset,data);
  98.         break;
  99.     }
  100. }
  101.  
  102. WRITE_HANDLER( geebee_out7_w )
  103. {
  104.     switch (offset & 7)
  105.     {
  106.     case 0:
  107.         logerror("out7_w:0 lamp1    $%02X\n", data);
  108.         geebee_lamp1 = data & 1;
  109.         osd_led_w(0, geebee_lamp1);
  110.         break;
  111.     case 1:
  112.         logerror("out7_w:1 lamp2    $%02X\n", data);
  113.         geebee_lamp2 = data & 1;
  114.         osd_led_w(1, geebee_lamp2);
  115.         break;
  116.     case 2:
  117.         logerror("out7_w:2 lamp3    $%02X\n", data);
  118.         geebee_lamp3 = data & 1;
  119.         osd_led_w(2, geebee_lamp3);
  120.         break;
  121.     case 3:
  122.         logerror("out7_w:3 counter  $%02X\n", data);
  123.         geebee_counter = data & 1;
  124.         break;
  125.     case 4:
  126.         logerror("out7_w:4 lockout  $%02X\n", data);
  127.         geebee_lock_out_coil = data & 1;
  128.         break;
  129.     case 5:
  130.         logerror("out7_w:5 bgw      $%02X\n", data);
  131.         geebee_bgw = data & 1;
  132.         break;
  133.     case 6:
  134.         logerror("out7_w:6 ball on  $%02X\n", data);
  135.         geebee_ball_on = data & 1;
  136.         break;
  137.     case 7:
  138.         logerror("out7_w:7 inv      $%02X\n", data);
  139.         if( geebee_inv != (data & 1) )
  140.             memset(dirtybuffer, 1, videoram_size);
  141.         geebee_inv = data & 1;
  142.         break;
  143.     }
  144. }
  145.  
  146.  
  147.